Skip to content

feat(skills): configure public extensions and organization skill precedence - #1332

Draft
rajshah4 wants to merge 2 commits into
mainfrom
codex/prd-198-marketplace-controls
Draft

rajshah4 wants to merge 2 commits into
mainfrom
codex/prd-198-marketplace-controls

Conversation

@rajshah4

@rajshah4 rajshah4 commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

HUMAN:

  • A human has tested these changes.

AGENT:

An organization admin can choose whether the public or organization marketplace version of github wins. The editor saves the choice and shows it again when reopened. Instance deployment settings can also disable automatic public skill loading and the default public plugin catalog.

Release dependency. This draft needs the companion SDK change in a released SDK and Agent Server, followed by an Enterprise pin update. The current 1.60.1 pin does not enforce the new sandbox controls.

Why

Organizations maintain skills that reflect their own development practices. Some want to disable the default public OpenHands collection and use their organization marketplace. Others want to keep the public collection available while letting an organization-maintained skill, such as their own version of github, take precedence over the public version.

Public loading currently also controls registered marketplace skill extraction. A customized organization skill can lose to the public version, and turning public loading off can remove the organization skill as well.

Summary

  • Store the optional preference on the existing organization marketplace registration and expose it in the marketplace editor. Unset keeps the legacy merge order.
  • Pass the preference through to the SDK and back into the editor on reopen. A regression covers the previously missing edit prop.
  • Gate Enterprise discovery on the public-skills setting and deliver both deployment switches through the existing sandbox environment.

The organization settings API already owns persistence and permissions, so this change adds no migration. The matched Agent Server supplies independent marketplace loading and runtime precedence.

Issue Number

Related to PRD-198 and OHE-4092. OHE-4092 also requests a SuperAdmin UI. The instance controls here are deployment environment variables.

How to Test

  1. Use the matched probe and instructions with the patched SDK and Agent Server.
  2. Edit a synthetic organization marketplace with an unset preference. Change only its ref, save, and reopen. It should retain Use existing behavior.
  3. Choose Use this marketplace's skill, save, and reopen. Verify that the selected value persists and the matched runtime probe receives the organization github.
  4. Disable the public sources through the deployment settings and verify the catalog-disabled response and organization skill loading in the matched probe.

Recorded results:

  • 59 frontend tests passed. The reopen regression fails without the added prop and passes with it.
  • Seven matched integration cases passed.
  • Enterprise backend groups passed 503 and 128 tests.
  • Touched-file Ruff, formatting, Mypy, and ESLint checks passed. Existing React Router type-generation errors remain outside the touched files.

Video/Screenshots

Playwright drove the patched Enterprise frontend in Chromium. Backend responses came from synthetic MSW handlers and an in-memory settings store. Save payload, settings readback, and the reopened value were asserted.

Existing preference unset

Organization marketplace with Use existing behavior

After saving and reopening

Organization marketplace with Use this marketplace's skill after save and reopen

Type

  • Bug fix
  • Feature
  • Refactor
  • Breaking change
  • Docs / chore

Notes

Both deployment switches default to enabled. Existing running sandboxes retain their environment. Live warm-claim, resume, and automation execution remain unverified.

The SDK release and subsequent Enterprise pin update are required before rollout. Review evidence is under .pr/prd-198/, following the repository's temporary evidence convention.

Prepared with OpenHands-hosted Opus 5.5 and reviewed by Codex.


Enterprise server image for this PR:

ghcr.io/openhands/enterprise-server:sha-8f02086

Add instance switches for automatic public skill loading
(OH_PUBLIC_SKILLS_ENABLED) and the default public plugin catalog
(OH_PUBLIC_PLUGIN_CATALOG_ENABLED). Both are forwarded to the agent server
through get_agent_server_env(). Registered org marketplaces keep loading
when public skills are off.

Add an optional public_skill_precedence field (null | "public" |
"marketplace") to org and instance marketplace registrations, with a
selector in the marketplace editor. Null keeps the existing merge order,
and personal registrations always drop the field. The Skills page passes
the saved value back to the editor when it reopens.

Takes effect only with a compatible openhands-sdk/agent-server release.
With the current 1.60.1 pin, the new request and registration fields are
ignored and Enterprise-side discovery gating still applies.

Review evidence (synthetic screenshots and a matched-version probe) is in
.pr/prd-198/.

Refs: PRD-198, OHE-4092

Co-authored-by: openhands <openhands@all-hands.dev>
@github-actions

Copy link
Copy Markdown

📁 PR Artifacts Notice

This PR contains a .pr/ directory with PR-specific documents. This directory will be automatically removed when the PR is approved.

For fork PRs: Manual removal is required before merging.

@github-actions github-actions Bot added the type: feat A new feature label Nov 11, 2026
@datadog-official

This comment has been minimized.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants